<?php

class AuthController extends Zend_Controller_Action {﻿
﻿	function init() {
	  $this->initGlobalVariables();
}
}

function initGlobalVariables(){
	﻿  ﻿  $this->initView();
	﻿  ﻿  $this->view->baseUrl  = $this->_request->getBaseUrl();
	﻿  ﻿  $this->view->styleUrl = '/styles';
	﻿  ﻿  $this->view->scriptUrl= '/scripts';
	﻿  ﻿  $this->view->imageUrl = '/images';
	﻿  ﻿  $this->view->linkManual = $this->view->baseUrl.'/manual';
	﻿  ﻿  $this->view->linkVoltar = $this->view->baseUrl;
}
﻿
﻿  function indexAction() {
	﻿  ﻿  $this->_redirect('/');
	﻿  }

	﻿  function loginAction() {
		﻿  ﻿  $this->view->action = $this->view->baseUrl . '/auth/login/';
		﻿  ﻿  $this->view->message = '';
		﻿  ﻿  if ($this->_request->isPost()) {
			﻿  ﻿  ﻿  $filter = new Zend_Filter_StripTags();
			﻿  ﻿  ﻿  $username = $filter->filter($this->_request->getPost('nomeUsuario'));
			﻿  ﻿  ﻿  $password = md5($filter->filter($this->_request->getPost('senha')));
			﻿  ﻿  ﻿  $db = Zend_Registry::get('db');
			﻿  ﻿  ﻿  $authAdapter = new Zend_Auth_Adapter_DbTable($db);
			﻿  ﻿  ﻿  $authAdapter->setTableName('usuario');
			﻿  ﻿  ﻿  $authAdapter->setIdentityColumn('ds_nome');
			﻿  ﻿  ﻿  $authAdapter->setCredentialColumn('ds_senha');
			﻿  ﻿  ﻿  $authAdapter->setIdentity($username);
			﻿  ﻿  ﻿  $authAdapter->setCredential($password);
			﻿  ﻿  ﻿  $auth = Zend_Auth::getInstance();
			﻿  ﻿  ﻿  $result = $auth->authenticate($authAdapter);
			﻿  ﻿  ﻿  if ($result->isValid()) {
				﻿  ﻿  ﻿  ﻿  $data = $authAdapter->getResultRowObject(null, 'ds_senha');
				﻿  ﻿  ﻿  ﻿  $auth->getStorage()->write($data);
				﻿  ﻿  ﻿  ﻿
				﻿  ﻿  ﻿  ﻿  //CARREGAR OS DADOS DO USUÁRIO NA SESSÃO
				﻿  ﻿  ﻿  ﻿  $authNamespace = new Zend_Session_Namespace('Zend_Auth');
				﻿  ﻿  ﻿  ﻿  $authNamespace->usuario = $username;
				﻿  ﻿  ﻿  ﻿  $authNamespace->idUsuario = $authAdapter->getResultRowObject()->id_usuario;
				﻿  ﻿  ﻿  ﻿  $authNamespace->idGrupoAcesso =$authAdapter->getResultRowObject()->id_grupo_acesso;

				﻿  ﻿  ﻿  ﻿  $login = new Login();
				﻿  ﻿  ﻿  ﻿  $login->load($authNamespace->idUsuario);
				﻿  ﻿  ﻿  ﻿  if (!$login->isActive()){
					﻿  ﻿  ﻿  ﻿  ﻿  $this->view->message = 'Usuário não está ativo.';
					﻿  ﻿  ﻿  ﻿  ﻿  return;
					﻿  ﻿  ﻿  ﻿  }﻿  ﻿  ﻿  ﻿
					﻿  ﻿  ﻿  ﻿  $fisica = new Fisica();
					﻿  ﻿  ﻿  ﻿  $fisica->load($login->id_fisica);
					﻿  ﻿  ﻿  ﻿  $juridica = new Juridica();
					﻿  ﻿  ﻿  ﻿  $juridica->load($fisica->id_juridica);
					﻿  ﻿  ﻿  ﻿  $authNamespace->nomeFantasiaEmpresa =$juridica->ds_nome;
					﻿  ﻿  ﻿  ﻿  $authNamespace->nomeUsuario         =$fisica->ds_nome_credencial;
					﻿  ﻿  ﻿  ﻿  $authNamespace->idFisica﻿  ﻿  ﻿  =$fisica->id_fisica;
					﻿  ﻿  ﻿  ﻿
					﻿  ﻿  ﻿  ﻿  //carregar o perfil de acesso e o grupo de acesso na sessão
					﻿  ﻿  ﻿  ﻿  $grupoAcesso = new GrupoAcesso();
					﻿  ﻿  ﻿  ﻿  $grupoAcesso->load($login->id_grupo_acesso);﻿  ﻿  ﻿  ﻿
					﻿  ﻿  ﻿  ﻿  if ($grupoAcesso->in_ativo=='N'){
						﻿  ﻿  ﻿  ﻿  ﻿  $this->view->message="O grupo ".$grupoAcesso->ds_nome." está desativado.";
						﻿  ﻿  ﻿  ﻿  ﻿  return;
						﻿  ﻿  ﻿  ﻿  }﻿  ﻿
						﻿  ﻿  ﻿  ﻿  //$authNamespace->idPerfilAcesso      =$grupoAcesso->id_perfil_acesso;﻿  ﻿
						﻿  ﻿  ﻿  ﻿  $this->_redirect('/index/');
						﻿  ﻿  ﻿  } else {
							﻿  ﻿  ﻿  ﻿  $this->view->message = 'Falha na autenticacao.';
							﻿  ﻿  ﻿  }
							﻿  ﻿  }
							﻿  }

							﻿  function lostAction() {
								﻿  ﻿  $filter = new Zend_Filter();
								﻿  ﻿  $valMail = new Zend_Validate();
								﻿  ﻿  $valUser = new Zend_Validate();
								﻿  ﻿  $filter->addFilter(new Zend_Filter_StripTags())
								﻿  ﻿         ->addFilter(new Zend_Filter_StringToLower())
								﻿  ﻿         ->addFilter(new Zend_Filter_StringTrim());
								﻿  ﻿
								﻿  ﻿  $valMail->addValidator(new Zend_Validate_EmailAddress());
								﻿  ﻿  $valUser->addValidator(new Zend_Validate_Alnum());
								﻿  ﻿
								﻿  ﻿  $this->view->title="Recuperar Senha";
								﻿  ﻿  $this->view->usuario=$filter->filter($this->_request->getPost('usuario'));
								﻿  ﻿  $this->view->email﻿  =$filter->filter($this->_request->getPost('email'));
								﻿  ﻿
								﻿  ﻿  if ($this->_request->isPost()) {
									﻿  ﻿  ﻿  if (($this->view->email==null && $this->view->usuario==null) ||
											﻿  ﻿  ﻿  ﻿  ($this->view->email  !=null && !$valMail->isValid($this->view->email)) ||
											﻿  ﻿  ﻿  ﻿  ($this->view->usuario!=null && !$valUser->isValid($this->view->usuario))){
										﻿  ﻿  ﻿  ﻿  $this->view->message = 'Informar usuário ou e-mail válido.';
										﻿  ﻿  ﻿  ﻿  return;
										﻿  ﻿  ﻿  } else {
											﻿  ﻿  ﻿  ﻿  $login = new Login();
											﻿  ﻿  ﻿  ﻿  if ($login->existsUserEmail($this->view->usuario, $this->view->email)){
												﻿  ﻿  ﻿  ﻿  ﻿  if ($login->isActive()==false){
													﻿  ﻿  ﻿  ﻿  ﻿  ﻿  $this->view->message.='Usuário está desativado.';
													﻿  ﻿  ﻿  ﻿  ﻿  ﻿  return;
													﻿  ﻿  ﻿  ﻿  ﻿  }
													﻿  ﻿  ﻿  ﻿  ﻿  $login->setPass();
													﻿  ﻿  ﻿  ﻿  ﻿  $login->salvar();
													﻿  ﻿  ﻿  ﻿  ﻿  $mail = new MailController($this->view->baseUrl);
													﻿  ﻿  ﻿  ﻿  ﻿  $mail->sendLoginLost($login->ds_mail, $login->ds_nome, $login->getPass());

													﻿  ﻿  ﻿  ﻿  ﻿  $mensagem = 'Senha alterada com sucesso!<br>E-mail com usuário e senha foi enviado no endereço '.$login->ds_mail.'.';

													﻿  ﻿  ﻿  ﻿  ﻿  $this->_forward('status', 'util', null,
															﻿  ﻿  ﻿  ﻿  ﻿  ﻿  ﻿  ﻿  ﻿  array('mensagem'=>$mensagem,
																	﻿  ﻿  ﻿  ﻿  ﻿  ﻿  ﻿  ﻿  ﻿  ﻿    'links'﻿  =>null));
													﻿  ﻿  ﻿  ﻿  ﻿  return;
													﻿  ﻿  ﻿  ﻿  } else {
														﻿  ﻿  ﻿  ﻿  ﻿  //Montar a mensagem de erro
														﻿  ﻿  ﻿  ﻿  ﻿  if ($this->view->usuario!=null){
															﻿  ﻿  ﻿  ﻿  ﻿  ﻿  $this->view->message='Usuário ';
															﻿  ﻿  ﻿  ﻿  ﻿  }
															﻿  ﻿  ﻿  ﻿  ﻿  if ($this->view->email!=null){
																﻿  ﻿  ﻿  ﻿  ﻿  ﻿  if ($this->view->message!=null){
																	﻿  ﻿  ﻿  ﻿  ﻿  ﻿  ﻿  $this->view->message.='e ';
																	﻿  ﻿  ﻿  ﻿  ﻿  ﻿  }
																	﻿  ﻿  ﻿  ﻿  ﻿  ﻿  $this->view->message.='E-mail ';
																	﻿  ﻿  ﻿  ﻿  ﻿  }
																	﻿  ﻿  ﻿  ﻿  ﻿  $this->view->message.='não encontrado. Por favor tente novamente.';
																	﻿  ﻿  ﻿  ﻿  }
																	﻿  ﻿  ﻿  }
																	﻿  ﻿  }
																	﻿  ﻿  $this->render();
																	﻿  }

																	﻿  function logoutAction() {
																		﻿  ﻿  Zend_Auth::getInstance()->clearIdentity();
																		﻿  ﻿  Zend_Session::destroy();
																		﻿  ﻿  $this->_redirect('/auth/login/');
																		﻿  }

}